package xq.gwt.mvc.model;

public interface PropertyModel {
	public String getName();
	public void setName(String name);	
	public String getTitle();
	public void setTitle(String title);
	public boolean isRequired();		
	public void setRequired(boolean required);
	public boolean isHidden();
	public void setHidden(boolean hidden);
	public ListItem[] getValueItems();	
	public void setValueItems(ListItem[] valueItems);
	public void addPropertyChangedListener(PropertyChangedListener listener);	
	public void removePropertyChangedListener(PropertyChangedListener listener);
	public void addReadOnlyChangedListener(ReadOnlyChangedListener listener);	
	public void removeReadOnlyChangedListener(ReadOnlyChangedListener listener);
	public void addRequiredChangedListener(RequiredChangedListener listener);	
	public void removeRequiredChangedListener(RequiredChangedListener listener);
	public void removeAllPropertyChangedListeners();
	public boolean isValid();	
	public boolean getHasError();
	public void setHasError(boolean hasError);
	public abstract String getText();
	public abstract void setText(String text) throws ConversionException;
	public abstract Object getObjectValue();
	public abstract Class getPropertyType();
	public boolean isReadonly();
	public void setReadonly(boolean value);
	public boolean isNotPersistent();
	public void setNotPersistent(boolean value);
	public boolean isLimitToList();
	public void setLimitToList(boolean value);
	public PropertyRelation getRelation();
	public void setRelation(PropertyRelation relation);
}
